Wer cpx_init() als
CPX_INFO * cdecl cpx_init( XCPB *xcpb, LONG magic, LONG version );definiert, kann anhand der Parameter <magic> und <version> feststellen, ob das CPX unter COPS oder XCONTROL läuft:
WORD is_COPS( LONG magic, LONG version ) { if (( magic == 'COPS' ) && ( version >= 0x10000L )) /* COPS? */ return( 1 ); return( 0 ); /* XCONTROL */ }Wenn COPS erkannt wurde, kann das CPX einen bis zu 512 * 384 Pixel großen Objektbaum zeichnen und bei Xform_do() übergeben.
Wenn COPS vorhanden ist, gilt außerdem folgende Erweiterung für cpx_call():
WORD cdecl cpx_call( GRECT *work, DIALOG *dialog );Dabei enthält <dialog> den Zeiger auf die Fensterdialogstruktur. Der Fensterdialog wird von COPS nach cpx_init() mit wdlg_create() und wdlg_open() geöffnet. Das GRECT <work> und der Objektbaum liegen bis zum ersten Aufruf von Xform_do() bzw. bis zur Rückkehr aus cpx_call() außerhalb des sichtbaren Bildschirms.